Partiamo dalle basi: Che cos’è un Notebook?

Jupyter Notebook è un progetto open-source nato per fornire un ambiente di sviluppo facile, interattivo e orientato al web. Più semplicemente, il Notebook ci permette di creare un documento in cui scrivere testo, aggiungere immagini ma soprattutto eseguire codice e vedere i risultati attraverso tabelle, widget e mappe dinamiche.

La domanda seguente è: A cosa mi serve un Notebook?

Nasce in ambiente accademico perché fornisce in un unico documento sia la descrizione teorica del proprio lavoro, sia il workflow operativo. Oltretutto i comandi sono replicabili: all’apertura del Notebook viene creata un’istanza che ci permetterà di modificare ed eseguire le linee di codice inserite nel documento, vedendo i risultati nella riga seguente. Si può comprendere che i vantaggi di presentare il proprio lavoro in un foglio interattivo e replicabile sono imparagonabili.

Ora vedremo come tutto questo si sposa alla perfezione nel mondo ESRI, in particolar modo su ambiente web come ArcGIS Online o ArcGIS Enterprise (Portal), utilizzando il Notebook con Python come linguaggio di programmazione.

Abbiamo già affrontato l’argomento “Jupyter Notebook in ArcGIS Pro” in un articolo precedente. Nel caso che ve lo siate persi, potete recuperarlo da qui.

Accesso e Struttura

Jupyter Notebook può essere installato sul vostro computer e utilizzarlo tramite una pagina del browser oppure lo troverete già integrato in ArcGIS Pro.

Per sfruttare a pieno le sue funzionalità web potete accedere anche da ArcGIS Online: lo trovate già presente nella toolbar sotto la voce “Appunti”. Se invece siete orientati alle soluzioni On-Premises potete installarlo sui vostri server e federarlo con il vostro Portal. Ritroverete la stessa icona “Appunti” nella toolbar.

 

Entrati in questa sezione troverete una nuova pagina dove saranno listati tutti i Notebook creati in precedenza oppure potrete accedere agli esempi messi a disposizione da ESRI.

 

Per creare un nuovo elemento sarà sufficiente selezionare il bottone in alto a destra “Nuovi appunti” e decidere tra 3 opzioni a seconda delle risorse richieste. Le impostazioni Standard sono sufficienti per la maggior parte dei processi, se invece necessitiamo di maggiore potenza computazionale possiamo scegliere Avanzato consumando 3 crediti per ogni ora di utilizzo.

Ovviamente la creazione di un nuovo oggetto finirà nella nostra repository visualizzabile tramite il tasto “Contenuto” presente nella toolbar. L’elemento sarà listato come ogni servizio o web-app che creiamo in AGOL (ArcGIS Online).

 

Creato il documento verremo reindirizzati all’interfaccia del Notebook che risulta molto semplice ed intuitiva. Possiamo aggiungere celle testuali (markdown) oppure celle di codice (code) ed eseguirle premendo SHIFT+INVIO. Sotto alla cella comparirà il risultato che potremo cliccare e navigare grazie alla sua interattività.

 

Se siete sprovvisti di ArcGIS Online e volete comunque provare Jupyter Notebook, potete accedere qui e verrà creata un’istanza nel vostro browser.

Funzionalità

Il Notebook avviato su AGOL si basa su Python ed essendo modulare possiamo espandere le sue funzioni importando pacchetti. Chiaramente per le componenti cartografiche utilizzeremo i moduli di ArcGIS, in particolare arcpy per le funzioni di analisi e arcgis.gis per le funzioni di gestione, ma nulla vieta di utilizzare le migliaia di altre librerie già presenti. Per vedere quali librerie sono già installate rimandiamo a questo link.

Il Notebook ci da accesso a qualsiasi comando che ritroviamo in ArcGIS Pro o su ArcGIS Online, compresa la gestione dei contenuti e utenti. Quindi potremmo utilizzarlo per creare dei flussi di lavoro da far revisionare ed eseguire a chiunque tramite una pagina web, senza dover necessariamente possedere il software sul proprio pc ed essere formati sul suo utilizzo.

Tramite il comando:


from arcgis.gis import GIS
gis = GIS("home") 

Ci verranno chieste le credenziali e avremo accesso al nostro portale di ArcGIS Online, nel quale potremo listare tutti i contenuti:


from IPython.display import display

items = gis.content.search('')
for item in items:
display(item)

Viceversa, se volessimo effettuare il login al nostro Portal potremo utilizzare il seguente codice:

 
gis = GIS("URL di Portal","Username","Password")

Per creare una nuova mappa ed avere come risultato un widget dinamico sarà sufficiente eseguire:

map = gis.map("Via Giovanni Gioacchino Winckelmann, 2, 20146 Milano MI")

map

Una volta connessi ad un portale sarà possibile creare nuovi servizi, aggiungere dati, cancellare vecchi elementi, gestire gli utenti o effettuare qualsiasi operazione che solitamente siamo abituati a fare tramite GUI. Per una panoramica di tutte le funzionalità possibili vi rimandiamo alla documentazione ufficiale, mentre se volete imparare esercitandovi esistono anche molti esempi di flussi di lavoro da scaricare qui.

Oltre alle funzionalità sopra citate vorremmo evidenziare la possibilità di schedulare l’esecuzione del nostro Notebook. Essendo hostato su cloud non è legato all’accensione del nostro computer e possiamo eseguirlo quotidianamente notificandoci per mail (o addirittura per SMS) i risultati. In questo caso dovremo utilizzare i WebHook che saranno argomento di futuri post. Per schedulare l’esecuzione vi consiglio di seguire questa guida.

Sample

Ora che abbiamo preso dimestichezza con lo strumento vediamo i Notebook messi a disposizione da ESRI come esempio. Entrando in Arcgis Online ed selezionando “Appunti” potremo spostarci su “Appunti campione ESRI”. Chiaramente possiamo utilizzare dati in locale oppure appoggiarci a servizi caricati sul nostro portale. Anche i dati provenienti da Living Atlas sono supportati.

Carichiamo “Construction Permit” e commentiamo i diversi passaggi:

La prima operazione è sempre l’importazione dei moduli che ci serviranno per eseguire le nostre funzioni. In particolare il modulo arcgis.gis è necessario per fare il login in Arcgis Online.

Ora potremo ricercare contenuti nel portale inserendo delle chiavi di ricerca nel titolo e nella tipologia di oggetto, in questo caso Feature Layer. Assegniamo il risultato ad una variabile per poterlo riutilizzare in seguito.

Creiamo una nuova mappa ed andiamo ad inserire il layer cercato in precedenza. L’oggetto generato sarà dinamico e ci permette di spostarci nella mappa, interrogare i dati, aggiungere widget proprio come in una mappa di Arcgis Online.

Il grande vantaggio è poter raccontare i nostri dati seguendo un ragionamento e consentendo all’utente di interagire con essi. Apriamo la tabella degli attributi utilizzando il modulo pandas che ha moltissime funzioni per i dati tabellari.

In questo modo potremo aggiungere grafici che sintetizzano i dati ed avere un riscontro in mappa filtrando tra gli elementi interessati.

Per finire generiamo un’altra mappa con i dati risultanti dalla nostra analisi e tematizziamo per classi. Questo oggetto potrà essere salvato nella nostra repository e generare un link che punta direttamente alla mappa.

Conclusioni

Il Notebook è uno strumento molto versatile. Può essere utilizzato in modalità debug, scrivendo comandi ed analizzando i risultati passo per passo. Lo consigliamo vivamente per chi muove i primi passi verso la programmazione.

Inoltre è possibile aggiungere estensioni al vostro ambiente del Notebook per inserire componenti utili come ad esempio il variable inspector 

In ambiente GIS lo consigliamo a chi deve eseguire script lato server ed ottenere diversi output intermedi. Soprattutto per chi lavora in team multidisciplinari risulta comodo poter documentare le righe di codice che vengono eseguite e generare un report finale.

Per maggiori informazioni sul mondo Esri contatta lo staff GIS di One Team via mail scrivendo a gis@oneteam.it o chiamaci allo 0247719331.

Iscriviti al blog per non perderti i prossimi appuntamenti!

Leave a Comment